﻿CREATE PROCEDURE [dbo].[usp_update_Alert]
(
           @AlertID uniqueidentifier
		   ,@Name varchar(255)
           ,@ConditionsString varchar(max)
		   ,@Debug bit = 0
)
AS

SET NOCOUNT ON;

-- Bootstrap
DECLARE @DebugPrefix       varchar(10);
DECLARE @ErrorCode         int;

SET @ErrorCode          = 0;
SET @DebugPrefix        = '>>> DEBUG: ';

-- Print parameters
IF (@Debug > 0)
BEGIN
	PRINT @DebugPrefix + '@AlertID = '		    + CONVERT(varchar, @AlertID);
	PRINT @DebugPrefix + '@ConditionsString = ' + @ConditionsString;
END;

DELETE FROM [dbo].[AlertCondition] WHERE [AlertID] = @AlertID

UPDATE [dbo].[Alert]
SET 
	[Name] = @Name,
	[ConditionsString] = @ConditionsString
WHERE [AlertID] = @AlertID

-- CHECK FOR ERROR
SET @ErrorCode = @@Error;

IF (@ErrorCode <> 0) GOTO ERROR_HANDLER;

RETURN 0;

-- Handles errors.
ERROR_HANDLER:
IF (@ErrorCode <> 0)
BEGIN
    IF (@Debug > 0) 
		BEGIN
			PRINT @DebugPrefix + 'Error Code = ' + CAST(@ErrorCode AS varchar(10)) + ' occurred.';
			RETURN @ErrorCode
		END

    -- Don't return any evidence of what specific error occurred, i.e. 
    -- we want to ward off potential hackers.
    RETURN 1;
END;

SET NOCOUNT OFF;
